package config

import (
	"fmt"

	_ "github.com/go-sql-driver/mysql"
	"github.com/jmoiron/sqlx"
)

/**
 * SysDB 系统数据库
 * DB1   业务数据库
 * DB2   历史数据库
 */
var SysDB, DB1, DB2 *sqlx.DB

// 初始化mysql连接数
func mysqlPool() {
	for i, conn := range Cfg.Mysql {
		switch i {
		case 0:
			SysDB = mysqlDB(&conn)
			// 默认DB1、DB2为同一个库
			DB1 = SysDB
			DB2 = SysDB
		case 1:
			DB1 = mysqlDB(&conn)
		case 2:
			DB2 = mysqlDB(&conn)
		}
	}
}

// 连接mysql数据库
func mysqlDB(db *mysqlConn) *sqlx.DB {
	dataSource := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?parseTime=true", db.User, db.Pwd, db.Ip, db.Port, db.Db)
	ds, err := sqlx.Connect("mysql", dataSource)
	LogPanic("mysqlDB", "mysql连接错误", err)

	// 打开的最大连接数
	ds.SetMaxOpenConns(db.OpenConn)
	// 连接池中最大空闲连接数
	ds.SetMaxIdleConns(db.IdleConn)

	return ds
}
